#pragma once

class Card {
public:
    // 定义花色枚举
    enum class Suit {
        Hearts,   // 红心
        Diamonds, // 方块
        Clubs,    // 梅花
        Spades,   // 黑桃
        Suit_size, // 大小王作为一种特殊花色
        Joker
    };

    // 定义点数枚举
    enum class Rank {
        Three = 3,    // 3
        Four,     // 4
        Five,     // 5
        Six,      // 6
        Seven,    // 7
        Eight,    // 8
        Nine,     // 9
        Ten,      // 10
        Jack,     // J
        Queen,    // Q
        King,     // K
        Ace,      // A
        Two,       // 2 
        Rand_size,
        Joker_min,
        Joker_max 
    };

    // 构造函数
    Card(Rank r, Suit s);

    // 获取点数
    Rank getRank() const;
    // 获取花色
    Suit getSuit() const;
    // 设置点数
    void setRank(Rank r);
    // 设置花色
    void setSuit(Suit s);

    // 重载 < 运算符
    bool operator<(const Card& other) const;

private:
    Rank m_rank; // 点数
    Suit m_suit; // 花色
};

